package SecondeStage.XianCheng;


public class Thread01 {
    public static void main(String[] args) throws InterruptedException {
        Cat cat = new Cat();
        // 启动线程 -> 执行run(),
        // 如果使用cat.run(),此时的run方法就是一个普通的方法，并没有真正的启动一个线程,此时会执行完run方法才会继续往下执行
        cat.start();
        // 说明，当main（主线程）启动一个子线程 Thread-0，主线程不会阻塞，会继续执行
        // 此时，主线程和子线程是交替执行的
        System.out.println("主线程继续执行"+  Thread.currentThread().getName());
        for (int i = 0; i < 10; i++) {
            System.out.println("主线程："+i);
            // 让主线程休眠
            Thread.sleep(1000);
        }
    }
}

// 1.当一个类继承了 Thread类，该类就可以当做线程使用
// 2.我们会重写run方法，写上自己的业务代码
// 3. run Thread类，实现了Runnable接口的run方法
class Cat extends Thread{
    int times=0;
    @Override
    public void run() {
        while (true){
            // 该线程每隔1秒。在控制台输出“”
            System.out.println("小猫喵喵叫"+ ++times + "线程名称=" + Thread.currentThread().getName());
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
            if (times==10){
                break;
            }
        }
    }
}